package com.ccrfid.rmc6.service.business.prison.rollcall;

import com.ccrfid.rmc6.appconfig.exception.pojo.AppException;
import com.ccrfid.rmc6.entity.business.prison.rollcall.PrisonRollcallPlaceEntity;
import com.ccrfid.rmc6.entity.personnel.PersonnelView;
import com.ccrfid.rmc6.pojo.dto.prison.rollcall.PrisonRollcallPersonnelDto;

import java.util.List;

public interface PrisonRollcallPlaceService {
    //获取点名地点列表
    List<PrisonRollcallPlaceEntity> getRollcallPlaceList();

    //获取单个点名地点
    PrisonRollcallPlaceEntity getRollcallPlace(Long placeId);

    //新增点名地点信息
    PrisonRollcallPlaceEntity createRollcallPlace(PrisonRollcallPlaceEntity entity) throws AppException;

    //修改点名地点信息
    PrisonRollcallPlaceEntity updateRollcallPlace(Long placeId, PrisonRollcallPlaceEntity entity) throws AppException;

    //删除点名地点信息
    Boolean deleteRollcallPlace(Long placeId);

    Boolean deleteRollcallPlaceList(List<Long> idList);

    //获取与某个点名地点关联的被点人员列表
    List<PrisonRollcallPersonnelDto> getRollcallPlacePersonnelList(Long placeId);

    //获取与某个点名地点关联的人员id列表
    List<Long> getRollcallPlacePersonnelIdList(Long placeId);

    //修改某个地点关联的被点名人员
    Boolean updateRollcallPlacePersonnelList(Long placeId, List<Long> personnelIdList) throws AppException;

    //为某个点名地点添加关联的被点名人员
    Boolean createRollcallPlacePersonnelList(Long placeId, List<Long> personnelIdList) throws AppException;

    //为某个点名地点删除关联的被点名人员
    Boolean deleteRollcallPlacePersonnel(Long placeId, Long personnelId) throws AppException;

    Boolean deleteRollcallPlacePersonnelList(Long placeId, List<Long> personnelIdList) throws AppException;

    //获取某个部门下未被某个点名地点关联的被点名人员
    List<PersonnelView> getRollcallPlaceFreePersonnelsInOrg(Long placeId, Long orgId);
}
